package com.shyroke.daydayzhuansvc.service;

import com.shyroke.daydayzhuanapi.dto.*;
import com.shyroke.daydayzhuanapi.entity.ProjectEndEntity;
import com.shyroke.daydayzhuanapi.entity.ProjectEntity;
import com.shyroke.daydayzhuansvc.util.Page;
import com.shyroke.daydayzhuansvc.util.R;
import com.shyroke.daydayzhuansvc.util.TabelData;
import org.springframework.stereotype.Service;

import javax.servlet.http.HttpServletRequest;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * 类名 ：
 * 用法 ：
 * 创建人 ： shyroke
 * 时间：2018/12/28 17:07
 */
@Service
public interface  IProjectService {
    TabelData getNormalProjectList(Page page, ProjectDto project, UserMain user);

    /**
     * 根据项目ID删除项目
     * @param id
     */
    void deleteById(Integer id);

    /**
     * 保存project
     * @param project
     */
    Integer save(ProjectDto project);

    /**
     * 根据id获取项目
     * @param projectId 项目ID
     * @return
     */
    ProjectEntity getProjectById(Integer projectId);

    /**
     * 修改免费项目
     * @param project
     */
    void update(ProjectAddRequest project);

    /**
     *  获取首页轮播的广告项目
     * @return
     */
    List<ProjectCommentDto> getCommentProjectList();

    TabelData<ProjectDto> getIndexData(Page page);

    TabelData<ProjectDto> getProjectByTypeIdPage(Page page,Integer typeId,Boolean isTop);

    List<ProjectDto> getNewProjectList(Integer count);

    /**
     * 获取项目按月榜单
     * @param typeId 项目类型ID
     * @return
     */
    List<ProjectDto> getRankProjectListByMonth(Integer typeId);

    List<ProjectDto> getNewProjectListPage(int page, int limit);

    List<ProjectDto> getCommentProjectList2();

    ProjectDto getProjectById_forAndroid(Integer projectId);

    TabelData<ProjectDto> getSerchPage(Page page, String key);

    TabelData<ProjectDto> getProjectByKeyIdPage(Page page, String keyId);

    ProjectEndEntity getProjectEndRandom();

    ProjectEntity getLastProjectByLabelId(Integer labelId);

    List<ProjectDto> getProjectListByTypeId(List<Integer> typeIdList, Map<Integer,TypeDto> typeMap);

    List<ProjectDto> getYangmaoListPage(Integer page, Integer limit,Integer typeId);

    TabelData<ProjectEntity> getProjectByUserIdPage(Page page, Integer uid);

    List<ProcessProjectDto> getWithDrawListHome(Integer projectId);

    TabelData<ProjectEntity> getWithDrawListPage(Page page,Integer projectId);

    TabelData<ProjectDto> getTemProjectList();

    List<ProjectEntity> getProjectListByNoFollow();

    List<ProjectDto> findByAppId(Integer appId);

    ProjectDto handleApp(ProjectDto dto);

    BigDecimal getProfitToday();

    TabelData<ProjectDto> getProjectByTypeIdAndLabelIdPage(Page page, Integer typeId, Boolean isTop, Integer labelId);

    List<TypeDto> getTypeList(Integer projectTypeId);

    List<LabelDto>  getTopLables();

    R updateProfit();

    Integer getYangmaoArticleCount();

    BigDecimal getAllProfit();
}
